In a Code Division Multiplex Access (CDMA) communication system, data bits are convolutionally encoded, interleaved and modulated onto a carrier before the modulated carrier is transmitted. The encoding function is based on a convolutional coding scheme with a constraint length of a plurality of data bits which are inputs into a convolutional encoder having a plurality of generator functions. The number of generator functions is defined by the convolutional coding rate. A data register having a length equal to the number of data bits as the constraint length in a first-in-first-out fashion shifts the information data across the encoder inputs, and for every shift, a branch word is generated by the encoder. Each branch word has a number of data bits equal to the number of the generator functions. At the receiving end, the signal is demodulated and decoded by a correlation receiver to extract the information.
In the prior art, a correlation receiver determines decoded bit metrics for each branch word generated without considering the dependency among encoded bits. Improvement in receiver sensitivity is obtained by redefining the means by which each bit metric is determined by taking into account inter-bit dependencies. A correlation receiver disclosed by Schaffner in patent application Ser. No. 08/581,696, filed on Dec. 29, 1995, assigned to the assignee of the present application, and incorporated herein by reference, takes into account such interdependency by relating the previously decoded bits to the branch word being decoded.
To incorporate the previously decoded bits in the decoding function, the previously decoded bits must be re-encoded. With reference to FIG. 1, a block diagram of Maximum Conditional Likelihood Decoder 100 as disclosed by Schaffner is shown. The previously decoded bits are formed into a sequence of history data bits at 107. A convolutional re-encoder 101 generates the re-encoded history data bits at 103 for each branch word being decoded. The sequence of history data bits gets longer as decoder 100 decodes subsequent branch words. The re-encoder 101, therefore, is required to keep track of the sequence and the required locations of re-encoder input taps in order to produce re-encoded history bits related to the branch word being decoded.
To generate re-encoded history data bits by utilizing storage elements, large amounts of storage elements are required. This implementation has been discouraged due to increasing number of the storage elements and the time required to write and read the data from the storage elements. In an implementation that does not require any storage elements, the entire history data bits at each decoding time step is re-encoded for finding and selecting the proper portions of the path history that relate to the branch word being decoded. This method, however, is not practical since the amount of calculation for each re-encoding operation creates unacceptable latency in producing the results.
Therefore, there is a need for an efficient method of generating re-encoded history data bits without re-encoding the entire history of data bits.